/***
 * @Description: 主要负责的是线程之间的资源锁的定义及其相关功能的实现的C语言文件
 * @Author: Liverpool
 * @Date: 2024-02-21 23:07:43
 * @LastEditTime: 2024-02-21 23:09:18
 * @LastEditors: Liverpool
 */
#include "locker.h"

/***
 * @description: 对锁进行初始化
 * @Author: Liverpool
 * @Date: 2024-02-23 01:38:01
 * @return {*}
 * @param {D_Locker} *locker 需要进行初始化的锁
 * @param {D_LockerType} locker_type 当前使用锁的场景类型
 */
net_err_t locker_init(D_Locker *locker, D_LockerType locker_type)
{
    if (locker_type == Locker_Thread)
    {
        sys_mutex_t mutex = sys_mutex_create();
        if (mutex == SYS_MUTEx_INVALID) // 互斥信号量的创建失败
        {
            return NET_ERR_SYS;
        }
    }
    locker->type = locker_type; // 锁使用的场景赋值
    return NET_ERR_OK;
}
/***
 * @description: 对锁进行销毁
 * @Author: Liverpool
 * @Date: 2024-02-23 01:46:15
 * @return {*}
 * @param {D_Locker} *locker 需要销毁的锁
 */
void locker_destroy(D_Locker *locker)
{
    if (locker->type == Locker_Thread) // 如果是线程之间的锁
    {
        sys_mutex_free(locker->mutex); // 需要销毁互斥信号量
    }
}

/***
 * @description: 对锁进行上锁
 * @Author: Liverpool
 * @Date: 2024-02-23 01:49:11
 * @return {*}
 * @param {D_Locker} *locker 需要上的锁
 */
void locker_lock(D_Locker *locker)
{
    if (locker->type == Locker_Thread) // 如果是线程之间的锁
    {
        sys_mutex_lock(locker->mutex); // 需要上锁互斥信号量
    }
}
/***
 * @description: 对锁进行解锁
 * @Author: Liverpool
 * @Date: 2024-02-23 01:49:11
 * @return {*}
 * @param {D_Locker} *locker 需要解的锁
 */
void locker_Unlock(D_Locker *locker)
{
    if (locker->type == Locker_Thread) // 如果是线程之间的锁
    {
        sys_mutex_unlock(locker->mutex); // 需要释放互斥信号量
    }
}